load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_cross_binary", "go_library")
load("@rules_oci//oci:defs.bzl", "oci_image")
load("@rules_pkg//:pkg.bzl", "pkg_tar")

go_library(
    name = "constellation-node-operator_lib",
    srcs = ["main.go"],
    importpath = "github.com/edgelesssys/constellation/v2/operators/constellation-node-operator",
    visibility = ["//visibility:private"],
    deps = [
        "//3rdparty/node-maintenance-operator/api/v1beta1",
        "//operators/constellation-node-operator/api/v1alpha1",
        "//operators/constellation-node-operator/controllers",
        "//operators/constellation-node-operator/internal/cloud/api",
        "//operators/constellation-node-operator/internal/cloud/aws/client",
        "//operators/constellation-node-operator/internal/cloud/azure/client",
        "//operators/constellation-node-operator/internal/cloud/fake/client",
        "//operators/constellation-node-operator/internal/cloud/gcp/client",
        "//operators/constellation-node-operator/internal/deploy",
        "//operators/constellation-node-operator/internal/etcd",
        "//operators/constellation-node-operator/internal/executor",
        "//operators/constellation-node-operator/internal/upgrade",
        "//operators/constellation-node-operator/sgreconciler",
        "@io_k8s_apimachinery//pkg/runtime",
        "@io_k8s_apimachinery//pkg/util/runtime",
        "@io_k8s_client_go//discovery",
        "@io_k8s_client_go//kubernetes/scheme",
        "@io_k8s_client_go//plugin/pkg/client/auth",
        "@io_k8s_sigs_controller_runtime//:controller-runtime",
        "@io_k8s_sigs_controller_runtime//pkg/client",
        "@io_k8s_sigs_controller_runtime//pkg/healthz",
        "@io_k8s_sigs_controller_runtime//pkg/log/zap",
        "@io_k8s_sigs_controller_runtime//pkg/metrics/server",
    ],
)

go_binary(
    name = "constellation-node-operator",
    embed = [":constellation-node-operator_lib"],
    # keep
    pure = "on",
    visibility = ["//visibility:public"],
)

go_cross_binary(
    name = "node_operator_amd64",
    platform = "@io_bazel_rules_go//go/toolchain:linux_amd64",
    target = ":constellation-node-operator",
    visibility = ["//visibility:public"],
)

pkg_tar(
    name = "layer",
    srcs = [
        ":node_operator_amd64",
    ],
    mode = "0755",
    remap_paths = {"/node_operator_amd64": "/node-operator"},
)

oci_image(
    name = "node_operator",
    base = "@distroless_static_linux_amd64",
    entrypoint = ["/node-operator"],
    tars = [
        ":layer",
    ],
    visibility = ["//visibility:public"],
)

filegroup(
    name = "crd_bases",
    srcs = glob(["config/crd/bases/*.yaml"]),
    visibility = ["//visibility:public"],
)

filegroup(
    name = "external_crds",
    srcs = glob(["external/**/*.yaml"]),
    visibility = ["//visibility:public"],
)
